package com.damon.authority.api.web.facade;

import com.damon.authority.api.dto.req.CreateResourceReq;
import com.damon.authority.api.dto.req.QueryResourceReq;
import com.damon.authority.api.dto.req.UpdateResourceReq;
import com.damon.authority.api.dto.resp.CreateResourceResp;
import com.damon.authority.api.dto.resp.ResourceInfoResp;
import com.damon.authority.api.dto.resp.UpdateResourceResp;
import com.kylin.shared.common.Pagination;
import com.kylin.shared.common.ResponseWrapper;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * 资源管理接口方法
 * @author Damon S.
 * @version v1.0.1
 * @date 2020年05月27日 22:49
 */
@RequestMapping(value = "/manage_v1/resources", produces = MediaType.APPLICATION_JSON_VALUE)
public interface ResourceManageFacade {

    /**
     * 查询资源
     * @param req 查询参数
     * @return 返回值
     */
    @GetMapping
    ResponseWrapper<Pagination<ResourceInfoResp>> find(
            @Valid QueryResourceReq req
    );

    /**
     * 新增资源
     * @param req 新增资源请求参数
     * @return 返回新增资源信息
     */
    @PostMapping
    ResponseWrapper<CreateResourceResp> create(
            @RequestBody @Valid CreateResourceReq req
    );

    /**
     * 更新资源
     * @param resourceId 更新资源ID
     * @param req 更新资源请求参数
     * @return 返回更新资源后的信息
     */
    @PostMapping("/{resourceId}")
    ResponseWrapper<UpdateResourceResp> update(
            @PathVariable Long resourceId,
            @RequestBody @Valid UpdateResourceReq req
    );
}
